#ifndef ETHERCAT_MASTER_H
#define ETHERCAT_MASTER_H

#include <string>
#include <memory>

// EtherCAT主站类型枚举
enum class MasterType {
    IGH,
    SOEM
};

// EtherCAT主站抽象接口类
class EtherCATMaster {
public:
    virtual ~EtherCATMaster() = default;

    // 初始化主站
    virtual bool init(const std::string& ifname) = 0;
    
    // 配置从站
    virtual bool configureSlaves() = 0;
    
    // 激活主站
    virtual bool activate() = 0;
    
    // 接收过程数据
    virtual bool receiveProcessData() = 0;
    
    // 发送过程数据
    virtual bool sendProcessData() = 0;
    
    // 检查主站状态
    virtual bool checkMasterState() = 0;
    
    // 检查域状态
    virtual bool checkDomainState() = 0;
    
    // 检查从站配置状态
    virtual bool checkSlaveConfigState() = 0;
    
    // 关闭主站
    virtual void shutdown() = 0;
    
    // 周期性任务
    virtual void cyclicTask() = 0;
    
    // 工厂方法，创建指定类型的主站实例
    static std::shared_ptr<EtherCATMaster> createMaster(MasterType type);
};

#endif // ETHERCAT_MASTER_H